/*************************************************************************
	> File Name: week16-1.cpp
	> Author: Potter
	> Mail: tobewhatwewant@gmail.com 
	> Created Time: 2014年06月17日 星期二 18时52分59秒
 ************************************************************************/
 /*
 *【例1】通过区号查找城市名。
 每个城市对应一个区号，如北京，010，
    在city.dat文件中预先存放几个城市的名称和区号，通个从屏幕输入区号，找到相应的城市并显示出来。
    利用fstream的write和read函数。
 * */

#include<iostream>
#include <fstream>
#include <cstring>
#include <cstdlib>
using namespace std;

class city {
    char cname[20];
    char tno[4];
public:
    city() {};
    city(char m[], char n[]) {
        strcpy(cname, m);
        strcpy(tno, n);
    }
    void disp() {
        cout << cname << "--" << tno << endl; 
    }

    int find(ifstream &f, char no[]) {
        while(! f.eof()) {
            f >> cname >> tno;
            cout << cname << "--" << tno << endl;
            exit(-1);
            /*for(int i=0; tno[i]; ++i) {
                if(tno[i] == ' ') {
                    tno[i] = '\0';
                    break;
                }
            }*/
            if(! strcpy(tno, no)) {
                cout << "Find: " << cname << "-" << tno;              
                return 1;
            }
        }
       cout << "Cannot Find "<< *no;
       return 0;
    }
};

int main(int argc, char * argv[]) {
    ifstream f;
    f.open("city.dat", ios::trunc | ios::in);
    
    city s;
    // city s1("Beijing", "010");
    // city s2("Tianjing", "021");
    
    f.seekg(0, ios::beg);

    char n[4];
    while (true) {
        cout << "Please AreaCode: ";
        cin >> n;
        cout << "Searching... Please wait for a while." << endl;
        s.find(f, n);
    }

    return 0;
}
